/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.losalpes.promocion;

import com.losalpes.data.IPersistence;
import com.losalpes.data.IPersistenceData;
import com.losalpes.data.PersistenceDataMock;
import com.losalpes.persistence.entity.Mueble;
import com.losalpes.persistence.entity.Promocion;
import com.losalpes.persistence.entity.TipoMueble;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

/**
 *
 * @author RICHARD
 */
@Stateless
public class PromocionService implements ipromocionservice {
    @EJB
    private IPersistence persitencia;

     /**
     * Atributos de la clase
     */
    private ArrayList<Promocion> promocionList=new ArrayList<Promocion>();
   //private IPersistenceData persistenciaData;

    public PromocionService() {
//        for (int i = 0; i < 10; i++) {
//
//                Promocion promocion;
//                Mueble mueble = new Mueble("001" + i, "Mueble" + i, "Descripción del mueble " + i, TipoMueble.Exterior, 3.25 * i, 2.14 * i, 2.34 * i, 2.48 * i);
//                if ((i % 2) == 0) {
//                    mueble.setMaterial("Madera");
//                    mueble.setFoto("/img/LicoreraChina.jpg");
//                } else {
//                    mueble.setMaterial("Metal");
//                    mueble.setFoto("/img/Escritorio.jpg");
//                }
//
//                //DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
//                promocion = new Promocion("ident" + i, "Promocion " + i, mueble.getNombre(), "01/" + i + "/2009", "01/" + i * 2 + "/2009");
//                this.promocionList.add(promocion);
//
//                //this.notificarCreacionPromocion(promocion);
//            //promocionList.add(promocion);
//
//        }
//        this.persistenciaData = new PersistenceDataMock();
    }

       public void add(Promocion promocion) {
           if (this.persitencia.findById(Promocion.class, promocion.getIdent()) == null) {
               this.persitencia.create(promocion);
           } else {
               this.persitencia.update(promocion);
           }
        //this.promocionList.add(promocion);
//            try {
//            this.notificarCreacionPromocion();
//        } catch (JMSException ex) {
//            Logger.getLogger(PromocionService.class.getName()).log(Level.SEVERE, null, ex);
//        }
    }

//    public void add(Promocion promocion) {
//        this.promocionList.add(promocion);
//    }
//
//     public void SendMessage() {
//        try {
//            this.notificarCreacionPromocion();
//        } catch (JMSException ex) {
//            Logger.getLogger(PromocionService.class.getName()).log(Level.SEVERE, null, ex);
//        }
//    }
    public void remove(Promocion promocion) {
        this.persitencia.delete(promocion);
        //this.promocionList.remove(promocion);
    }

    public void update(Promocion promocion) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public List<Promocion> findAll() {
        return this.persitencia.findAll(Promocion.class);
        //return this.promocionList;
    }

//    public List<Promocion> findByMueble(String referencia) {
//        ArrayList<Promocion> promocionXMueble=new ArrayList<Promocion>();
//
//        for (Iterator<Promocion> it = promocionList.iterator(); it.hasNext();) {
//            Promocion promocion = it.next();
//            if (promocion.getMueble().getReferencia().equals(referencia)) {
//                promocionXMueble.add(promocion);
//            }
//        }
//        return promocionXMueble;
//    }
//    public ArrayList<Promocion> findAllByDateBegin(String fechaInicial, String fechaFinal) {
//        ArrayList<Promocion> promocionPorFecha = new ArrayList<Promocion>();
//
//        for (Iterator<Promocion> it = this.promocionList.iterator(); it.hasNext();) {
//            Promocion promocion = it.next();
//            if (promocion.getFechaInicio().after(this.convertirToFecha(fechaInicial)) && promocion.getFechaInicio().before(this.convertirToFecha(fechaFinal))) {
//                promocionPorFecha.add(promocion);
//            }
//        }
//        return promocionPorFecha;
//    }

//    public ArrayList<Promocion> findAllByDateEnd(String fechaInicial, String fechaFinal) {
//        ArrayList<Promocion> promocionPorFecha = new ArrayList<Promocion>();
//
//        for (Iterator<Promocion> it = this.promocionList.iterator(); it.hasNext();) {
//            Promocion promocion = it.next();
//            if (promocion.getFechaFin().after(this.convertirToFecha(fechaInicial)) && promocion.getFechaFin().before(this.convertirToFecha(fechaFinal))) {
//                promocionPorFecha.add(promocion);
//            }
//        }
//        return promocionPorFecha;
//    }

    private Date convertirToFecha(String fecha) {
        try {
            DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
            Date fechaFormateada = df.parse(fecha);
            return fechaFormateada;
        } catch (ParseException ex) {
            Logger.getLogger(PromocionService.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }

//    public void delete(String cIdentificacion) {
////        for (int i = 0; i < promocionList.size(); i++) {
////            Promocion m = promocionList.get(i);
////            if (m.getIdent().equals(cIdentificacion)) {
////                promocionList.remove(i);
////                break;
////            }
////
////        }
//    }

    public List<Promocion> findByMueble(String referencia) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void SendMessage() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public List<Promocion> findAllByDateBegin(String fechaInicial, String fechaFinal) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public List<Promocion> findAllByDateEnd(String fechaInicial, String fechaFinal) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

     public Promocion findPromocionById(String identificacion) {
        return (Promocion) this.persitencia.findById(Promocion.class, identificacion);
    }

    public void delete(String cIdentificacion) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
